package com.example.docmanagement.dto.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.UUID;

/**
 * 文件元数据响应 DTO
 * 用于返回文件信息给前端
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FileMetadataResponse {

    /**
     * 文件 ID
     */
    private Long id;

    /**
     * 原始文件名
     */
    private String fileName;

    /**
     * MinIO 文件路径
     */
    private String filePath;

    /**
     * 文件访问 URL
     */
    private String fileUrl;

    /**
     * 缩略图 URL（图片类型）
     */
    private String thumbnailUrl;

    /**
     * 文件大小（字节）
     */
    private Long fileSize;

    /**
     * MIME 类型
     */
    private String mimeType;

    /**
     * 文件类型
     */
    private String fileType;

    /**
     * 文件扩展名
     */
    private String fileExtension;

    /**
     * 图片宽度（像素）
     */
    private Integer width;

    /**
     * 图片高度（像素）
     */
    private Integer height;

    /**
     * Bucket 名称
     */
    private String bucketName;

    /**
     * 访问策略
     */
    private String accessPolicy;

    /**
     * MD5 哈希
     */
    private String md5Hash;

    /**
     * 关联的文档 ID
     */
    private Long documentId;

    /**
     * 上传者 ID
     */
    private UUID uploadedBy;

    /**
     * 下载次数
     */
    private Integer downloadCount;

    /**
     * 查看次数
     */
    private Integer viewCount;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    /**
     * 上传来源
     * 可选值：editor（Monaco 编辑器）、attachment（文档附件上传）、manual（手动上传）
     */
    private String uploadSource;
}

